<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>589. N 叉树的前序遍历</title>
  </head>
  <body>
    <script>
      //     给定一个 n 叉树的根节点  root ，返回 其节点值的 前序遍历 。

      // n 叉树 在输入中按层序遍历进行序列化表示，每组子节点由空值 null 分隔（请参见示例）。

      // 示例 1：

      // 输入：root = [1,null,3,2,4,null,5,6]
      // 输出：[1,3,5,6,2,4]
      // 示例 2：

      // 输入：root = [1,null,2,3,4,5,null,null,6,7,null,8,null,9,10,null,null,11,null,12,null,13,null,null,14]
      // 输出：[1,2,3,6,7,11,14,4,8,12,5,9,13,10]

      // 来源：力扣（LeetCode）
      // 链接：https://leetcode.cn/problems/n-ary-tree-preorder-traversal
      // 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
      /**
       * // Definition for a Node.
       * function Node(val, children) {
       *    this.val = val;
       *    this.children = children;
       * };
       */

      /**
       * @param {Node|null} root
       * @return {number[]}
       */
      var preorder = function (root) {
        const res = []
        helper(root, res)
        return res
      }

      const helper = (root, res) => {
        if (root === null) {
          return
        }
        res.push(root.val)
        for (const ch of root.children) {
          helper(ch, res)
        }
      }
    </script>
  </body>
</html>
